//做鉴权的，获取用户权限

//导入页面
import pageRouter from "@/router";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { getToken } from "./utils/auth";

// https://www.npmjs.com/package/nprogress

NProgress.configure({ showSpinner: false });

//配置哪些页面不需要做鉴权,配置白名单
const whiteList = ["/login"];

// to 表示即将要跳转去的页面to={path:"xxxxx"}
pageRouter.beforeEach(async (to) => {
  NProgress.start();
  const hasToken = getToken();
  if (hasToken) {
    //如果有token，用token去换用户信息
    if (to.path === "/login") {
      //有token，并且还是去登录页/login
      NProgress.done();
      return {
        path: "/",
        replace: true
      };
    }
    NProgress.done(); //关闭loading
  } else {
    //如果要去的页面是在配置白名单里面，则直接跳转就可以
    if (whiteList.includes(to.path)) {
      NProgress.done();
      return true;
    } else {
      NProgress.done();

      // http://localhost:5173/login?redirect=/documentation/index&a=1&b=2
      //如果用户没有登录则跳转到登录页面，有回跳地址redirect的话，登录后再回跳到redirectUrl页面
      return {
        path: "/login",
        query: {
          redirect: to.path, // 获取回跳地址
          ...to.query //回跳地址的参数
        }
      };
    }
  }
});
